第七讲 R-相关性分析及作图
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
在上一讲中,我们介绍了第六讲 R-数据正态分布检验(点我可跳转)。这两天大家学习积极性很高,在群里纷纷交作业,群里讨论也很活跃,想入群的拉倒文末撩小编哦。
相关性分析用于评估两个或多个变量之间的关联。例如,如果我们想知道父亲和儿子的身高之间是否存在关系,可以计算相关系数来回答这个问题。
如果两个变量(父亲和儿子的身高)之间没有关系,则儿子的平均身高应该相同,而与父亲的身高无关,反之亦然。
注意,仅当数据呈正态分布时,才可以使用相关性分析。可以使用Shapiro-Wilk test进行检查。请参看 第六讲 R-数据正态分布检验
小编将描述几种相关性分析的方法,并提供示例。
1. 相关性分析的方法
相关分析的方法有多种:
皮尔逊(Pearson)相关(r),它测量两个变量(x和y)之间的线性相关性。它也称为参数相关性检验,因为它取决于数据的分布。仅当x和y来自正态分布时才可以使用它。y = f(x)的图称为线性回归曲线。
Kendall tau和Spearman rho,它们是基于等级的相关系数(非参数)。
最常用的方法是Pearson相关方法。
在下面的公式中
x和y是长度为n的两个向量
mx和my分别对应于x和y的均值。
下面将会详细介绍皮尔逊相关公式、Spearman相关公式、肯德尔(Kendall)相关公式。
相关性的p值(显着性水平)可以通过下列方式确定:
1. 通过查询相关系数表。其中自由度为:df=n-2,n是x和y变量中的观察次数(长度)。
2. 或通过如下计算t值:对应的p值通过t分布表确认,其中自由度为:df=n-2,n是x和y变量中的观察次数(长度)。
如果p值<0.05,则x和y之间的相关性很显着。
Spearman相关方法用来计算x的秩和y变量的等级之间的相关性。
其中x’=rank(x), y’=rank(y).
Kendall相关分析测量变量x和y的秩次之间的对应关系。
x与y观测值的可能配对的总数为n(n-1)/2,其中n是x和y的样本数大小。
步骤如下:
首先通过x值对x和y进行排序。如果x和y相关,则它们将具有相同的相对秩次顺序。
现在,对于每个yi,计算yj>yi的数量(一致性对(c))和yj
<yi的数量(不一致性对(d))。
</yi的数量(
肯德尔相关距离定义如下:
其中,nc:一致对的总数
nd:不一致对的总数
n:x和y的样本量大小
2. 用R完成相关性分析
可以使用函数cor()或cor.test()来计算相关系数:
cor()计算相关系数
cor.test()检验配对样本之间的相关性。它同时返回相关系数和相关的显着性水平(p值)。
简化格式为:
cor(x, y, method = c("pearson", "kendall", "spearman"))
cor.test(x, y, method=c("pearson", "kendall", "spearman"))
x,y:具有相同长度的数值向量
method:相关法
如果你的数据包含缺失值,请使用以下R代码通过按大小写删除来处理缺失值。
cor(x, y, method = "pearson", use = "complete.obs")
在这里,我们将使用名为mtcars的内置R数据集。我们之后会检验mtcars数据中mpg和wt变量之间的相关性。
# 导入R内自带的mtcars数据集
library(datasets)
data(mtcars)
# 将数据存储在变量my_data中
my_data <- mtcars
你可以使用head()和tails()函数检查数据,这将分别显示数据的第一部分和最后一部分。
# 显示前六行内容
head(my_data, 6)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
cor(my_data$mpg,my_data$wt,method="pearson",use="complete.obs")
[1] -0.8676594
cor.test(my_data$mpg,my_data$wt,method="pearson",use="complete.obs")
Pearson's product-moment correlation
data: my_data$mpg and my_data$wt
t = -9.559, df = 30, p-value = 1.294e-10
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.9338264 -0.7440872
sample estimates:
cor
-0.8676594
可以看出,mpg与wt间的相关系数是0.87,呈负相关,其95%可信区间为-0.93到-0.74,P值为1.294e-10。说明两者高度相关。
这里我们将使用R函数plot()
x <- mtcars$wt
y <- mtcars$mpg
plot(x, y, main = "Main title",
xlab = "X axis title", ylab = "Y axis title",
pch = 19, frame = T)
# 添加回归线
abline(lm(y ~ x, data = mtcars), col = "red")
好了,本期讲解就先到这里。
第二讲 R-编程基础-运算、数据类型和向量等基本介绍
第三讲 R编程基础-矩阵和数据框
第四讲 R-描述性统计分析
当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。
快扫二维码撩客服,
带你进入投必得医学交流群,
让我们共同进步!
↓↓
- END -
长按二维码关注「投必得医学」,更多科研干货在等你!
麻烦点一下在看再走呗